#include "MapaParser.h"
#include "DebugParser.h"
#include <fstream>
#include <iostream>
#include "Mapa.h"
#include "FabricaDeJugadoresObservables.h"
#include "NotificadorDeCambios.h"
#include "FabricaDeTerritoriosObservables.h"
#include "TiradorDeDadosDesdeArchivo.h"

int main(int argc, char** argv) {
	std::string mapa(argv[1]);
	std::string jugadas(argv[2]);
	std::string tiradas(argv[3]);
  #ifdef LIBXMLCPP_EXCEPTIONS_ENABLED
  try
  {
  #endif //LIBXMLCPP_EXCEPTIONS_ENABLED 
    NotificadorDeCambios notificadorDeCambios;
    FabricaDeJugadores* fabricaDeJugadores = new FabricaDeJugadores();
	FabricaDeTerritorios* fabricaDeTerritorios = new FabricaDeTerritorios();
    Mapa unMapa(fabricaDeTerritorios);
	MapaParser mapaParser(&unMapa);
    mapaParser.parse_file(mapa);
    TiradorDeDados* tiradorDeDados = new TiradorDeDadosDesdeArchivo(tiradas);
    DebugParser debugParser(mapaParser.obtenerMapa(),fabricaDeJugadores,tiradorDeDados);
    debugParser.parse_file(jugadas);
  #ifdef LIBXMLCPP_EXCEPTIONS_ENABLED
  }
  catch(const xmlpp::exception& ex)
  {
    std::cout << "libxml++ exception: " << ex.what() << std::endl;
  }
  #endif	
}